<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Hash;
use DB;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class UserController extends Controller
{
    /**
     * 后台用户添加
     */
    public function getAdd()
    {
    	return view('user.add');
    }

    /**
     * 处理表单提交数据
     */
    public function postInsert(Request $request)
    {
    	//查看所有提交的数据
    	// dd($request->all());
    	//表单验证
    	 $this->validate($request, [
	        'username' => 'required|regex:/\w{6,18}/',
	        'password' => 'required|regex:/\w{6,18}/',
	        'repassword' => 'required|same:password',
	        'email' => 'required|email',
	        'phone' => 'required|regex:/1[3-8]\d{9}/',
    	],[
    		'username.required'=>'用户名不能为空',
    		'username.regex'=>'用户名需要输入6到18位数字字母下划线',
    		'password.required'=>'密码不能为空',
    		'password.regex'=>'密码需要输入6到18位数字字母下划线',
    		'repassword.required' => '确认密码不能为空',
    		'repassword.same' => '两次密码不一致',
    		'email.required' => '邮箱不能为空',
    		'email.email' => '邮箱格式不正确',
    		'phone.required' => '手机号不能为空',
    		'phone.regex'=>'手机号格式不正确',
    	]);
    	//提取其它数据
    	$data = $request->only(['username','password','email','phone']);
    	//随机token
    	$data['token'] = str_random(50);
    	//状态默认为1 未激活
    	$data['status'] = 1;
    	//密码加密
    	$data['password'] = Hash::make($data['password']);
    	//处理图片上传
    	$data['pic'] = $this->upload($request);
    	
    	//数据插入
    	$res = DB::table('users')->insert($data);
    	//判断
    	if($res){
    		return redirect('/admin/user/index')->with('success','添加成功');
    	}else{
    		return back()->with('error','添加失败');
    	}
    }

    /**
     * 用户列表
     */
    public function getIndex(Request $request)
    {
    	//获取分页大小
    	$num = $request->input('num',10);
    	//查询所有数据分页显示 判断
    	if($request->input('keywords')){
    		$users = DB::table('users')->where('username','like','%'.$request->input('keywords').'%')->paginate($num);
    	}else{
    		$users = DB::table('users')->paginate($num);
    	}
    	//laravel的高级where条件  闭包中的$query代表当前数据库对象
    	// $users = DB::table('users')->where(function($query) use($request){
    	// 	//判断是否有where条件
    	// 	if($request->input('keywords')){
    	// 		$query->where('username','like','%'.$request->input('keywords').'%');
    	// 	};
    	// })->paginate($num);

    	//解析模板
    	return view('user.index',['users'=>$users,'request'=>$request->all()]);
    }

    /**
     * 修改用户信息
     */
    public function getEdit(Request $request)
    {
    	$id = $request->input('id');
    	//通过id查询
    	$user = DB::table('users')->where('id',$id)->first();
    	// //解析模板  分配页面
    	return view('user.edit',['user'=>$user]);
    }

    /**
     * 修改数据
     */
    public function postUpdate(Request $request)
    {
    	$data = $request->except(['_token','id']);
    	$id = $request->input('id');
    	$data['pic'] = $this->upload($request);
    	$res = DB::table('users')->where('id',$id)->update($data);
    	if($res){
    		return redirect('/admin/user/index')->with('success','修改成功');
    	}else{
    		return back()->with('error','修改失败');
    	}

    }

    /**
     * ajax删除用户
     */
    public function postDelete(Request $request)
    {
    	$id = $request->input('id');
    	//执行数据删除
    	$res = DB::table('users')->where('id',$id)->delete();
    	//判断返回
    	if($res){
    		echo 1;
    	}else{
    		echo 0;
    	}
    }

    /**
     * 图片上传操作
     */
    public function upload(Request $request)
    {
    	if($request->hasFile('pic')){
    		//文件名称
    		$name = md5(time()+rand(111,99999));
    		//获取文件后缀名
    		$suffix = $request->file('pic')->getClientOriginalExtension();
    		$arr = ['jpg','png','gif','peng','jpeg'];
    		//判断上传文件类型
    		if(!in_array($suffix,$arr)){
    			echo '上传文件不符合要求';die;
    		}
    		//将指定文件移动到指定位置
    		$request->file('pic')->move('./uploads/users/',$name.'.'.$suffix);
    		//将文件路径及文件名称返回
    		return '/uploads/users/'.$name.'.'.$suffix;
    	}
    }
}
